#pragma once 

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h>

#define MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 12
#define MAX_ADDR 50
#define MAX_SIZE 1000
#define DEFAULT_SZ 3
#define INC_SZ 2

//枚举选择
enum Choice
{
	Exit,		//退出
	Add,		//添加
	Del,		//删除
	Search,		//查找
	Modify,		//修改
	Show,		//展示
	Clear,		//清空
	Sort,		//排序
};

//定义一个人的信息的结构体
typedef struct PeoInfo
{
	char name[MAX_NAME];	//姓名
	int age;				//年龄
	char sex[MAX_SEX];		//性别
	char tele[MAX_TELE];	//电话
	char addr[MAX_ADDR];	//地址
}PeoInfo;

//通讯录结构体
typedef struct Contact
{
	PeoInfo *data;			//指针指向联系人信息的空间
	int count;				//记录已经存放信息的个数
	int capacity;			//记录空间的容量
}Contact;

//初始化一个通讯录
void InitContact(Contact* pc);

//添加通讯录信息
void AddContact(Contact* pc);

//显示通讯录信息
void ShowContact(const Contact* pc);

//删除通讯录信息(根据姓名删除)
void DelContact(Contact* pc);

//查找通讯录信息(根据姓名查找)
void SearchContact(const Contact* pc);

//修改通讯录信息(根据姓名修改)
void ModifyContact(Contact* pc);

//清空通讯录信息
void ClearContact(Contact* pc);

//对通信录信息进行排序
void SortContact(Contact* pc);

//销毁通信录,将空间归还给操作系统
void DestroyContact(Contact* pc);

//保存数据到文件中
void SaveContact(const Contact* pc);
